<?php

namespace CoffeeScript;

class yy_Arr extends yy_Base
{

    public $children = array('objects');

    function constructor($objs)
    {
        $this->objects = $objs ? $objs : array();

        return $this;
    }

    function assigns($name)
    {
        foreach ($this->objects as $obj) {
            if ($obj->assigns($name)) {
                return TRUE;
            }
        }

        return FALSE;
    }

    function compile_node($options)
    {
        if (!count($options)) {
            return '[]';
        }

        $options['indent'] .= TAB;
        $objs = $this->filter_implicit_objects($this->objects);

        if (($code = yy_Splat::compile_splatted_array($options, $objs))) {
            return $code;
        }

        $code = array();

        foreach ($objs as $obj) {
            $code[] = $obj->compile($options);
        }

        $code = implode(', ', $code);

        if (strpos($code, "\n") !== FALSE) {
            return "[\n{$options['indent']}{$code}\n{$this->tab}]";
        } else {
            return "[{$code}]";
        }
    }

    function filter_implicit_objects()
    {
        return call_user_func_array(array(yy('Call'), __FUNCTION__), func_get_args());
    }

}

?>
